package br.com.freelancer.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Walter Fontes
 *
 * Classe para auxiliar o tratamento de campos do tipo CEP
 */
public class CEPHelper {
	
	//Construtor privado. Os métodos devem ser estáticos
	private CEPHelper() {}
	
	
	/**
	 * Método para retirar qualquer caractere não numérico de uma String
	 * 
	 * @param cep
	 * @return
	 */
	public static final Integer retiraCaracteresAlpha(String cep) {
		if(ObjectHelper.isEmpty(cep)) return null;
		return Integer.parseInt(cep.replaceAll("\\D+", ""));
	}
	
	public static final String retiraCaracteresAlpha2String(String cep) {
		if(ObjectHelper.isEmpty(cep)) return "";
		return cep.replaceAll("\\D+", "");
	}
	
	/**
	 * Método para verificar se o campo do CEP está no formato correto
	 * 
	 * @param cep
	 * @return
	 */
	public static final boolean validaFormatoCEP(String cep) {
		
    	if (cep == null) return false;
    	
		Pattern p = Pattern.compile("^[0-9]{5}[-]{1}[0-9]{3}$");  
		Matcher m = p.matcher(cep);
		
		return m.matches();
	}
	
	
	/**
	 * Método para formatar um CEP
	 * 
	 * @param cep
	 * @return
	 */
	public static final String formataCEP(int cep) {
		
		String cepStr = String.valueOf(cep);
		
		if (cepStr.length() > 8) {
			cepStr = cepStr.substring(0,8);
		} else {
			while (cepStr.length() < 8) {
				cepStr = "0" + cepStr;
			}
		}
		
		cepStr = cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8); 
		
		return cepStr;
	}
}
